package com.pig4cloud.pig.module.api.entity.electric;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;

/**
 * 水电对象 electric_meter
 *
 * @author ruoyi
 * @date 2022-09-01
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("electric_meter")
public class ElectricMeter implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * $column.columnComment
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;


	/**
	 * 所属物业id
	 */
	private Integer propertyId;

	/**
	 * 所属物业
	 */
	private String propertyName;

    /**
     * 绑定的集中器id
     */
    private Integer concentratorId;

    /**
     * 集中器编号
     */
    private String concentratorSn;

    /**
     * 设备SN号
     */
    private String deviceSn;

    /**
     * 设备名称
     */
    private String deviceName;

    /**
     * 设备类型  0 - 电表  1 - 水表
     */
    private Integer deviceType;

	/**
	 *   电表类型  0 - 485通讯类型   1 - 4G通讯类型    2 - 有线通讯类型
	 */
	private Integer meterType;

    /**
     * 所在小区id
     */
    private Integer estateId;

    /**
     * 小区名称
     */
    private String estateName;

	/**
	 *  开户状态
	 */
	private Integer openAccountState;

	/**
	 *  开户初始金额
	 */
	private BigDecimal initMoney;
	/**
	 *  开户描述
	 */
	private String openAccountDsp;

	/**
	 * 是否自有平台 0 - 电表平台  1 - 跃豆自有平台
	 */
	private Integer isSelf;

    /**
     * 房屋id
     */
    @TableField(updateStrategy=FieldStrategy.IGNORED)
    private Integer roomId;

    /**
     * 房屋编号
     */
    @TableField(updateStrategy=FieldStrategy.IGNORED)
    private String roomNo;

    /**
     * 采集器ID
     */
    private String deviceCid;

    /**
     * 表号
     */
    private String deviceAddress;

    /**
     * 业主姓名
     */
    @TableField(updateStrategy=FieldStrategy.IGNORED)
    private String holderName;

    /**
     * 业主手机号
     */
    @TableField(updateStrategy=FieldStrategy.IGNORED)
    private String holderPhone;

    /**
     * 设备状态
     */
    private Integer state;

    /**
     * 设备在线状态
     */
    private String onlineState;

    /**
     * 最后连接时间
     */
	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastOnlineTime;

    /**
     * 最后离线时间
     */
	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastOfflineTime;

    /**
     * 添加时间
     */
    @TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

	/**
	 *  最后一次抄表时间
	 */
	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date lastQueryTime;

    /**
     * 电费单价
     */
    private BigDecimal singlePrice;

    /**
     * 一级报警金额
     */
    private BigDecimal warnTipOne;

    /**
     * 二级报警金额
     */
    private BigDecimal warnTipTwo;

    /**
     *  最后一次的预警时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastWarnTime;
    /**
     * 充值次数
     */
    private Integer payCount;

    /**
     * 剩余电费
     */
    private BigDecimal accountMoney;

    /**
     * 剩余电量
     */
    private BigDecimal electricityCount;

    /**
     * 开合闸状态  0 - 关闭  1 - 开闸状态
     */
    private Integer gateState;

	/**
	 *  电表二维码
	 */
	private String qrCode;

    @TableField(exist = false)
    private String BuildNo;

    @TableField(exist = false)
    private String UnitNo;

    @TableField(exist = false)
    private String RoomNum;

    private Integer bangType;

	/**
	 *  查询电表数据的类型
	 *  3:正向有功总电能 4:反向有功总电能 5:正向无功总电能  6:反向无功总电能
	 *  22:剩余金额 27:A相电流  30:A相电压
	 *  33:瞬时有功功率 34:瞬时无功功率 35:读取费率电价 38:读取一级报警金额 39:读取二级报警金额
	 *  40:读取电流互感器变比 106:查询继电器状态
	 */
	@TableField(exist = false)
	private Integer queryDataType;


	/**
	 *  线下充值金额
	 */
	@TableField(exist = false)
	private Double rechargeMoney;

}
